package com.sunl.mall.ali.mq.serializer;

import com.aliyun.openservices.shade.org.apache.commons.lang3.SerializationException;
import com.sunl.mall.ali.mq.model.RocketMqMessageBody;
import com.sunl.mall.ali.mq.model.RocketMqMessageContext;

/**
 * 反序列化消息体接口定义，针对不同的消息可以分别实现
 *
 * @param <T> 消息体的实际类型
 */
@FunctionalInterface
public interface RocketMqDeserializer<T> {
    /**
     * 反序列化消息体
     *
     * @param bytes   消息体
     * @param context 消息上下文
     * @return 反序列化后的body
     * @throws SerializationException exception
     */
    RocketMqMessageBody<T> deserialize(byte[] bytes, RocketMqMessageContext context) throws SerializationException;
}
